1. Field of the Invention
The present invention relates to the field of networked storage systems, and more particularly, to a system and method for cache management in networked storage systems.
2. Description of the Related Art
With the accelerating growth of Internet and intranet communication, high bandwidth applications (such as streaming video), and large information databases, the need for networked storage systems has increased dramatically. FIG. 1 illustrates an exemplary network storage system 100 comprising a plurality of hosts 10a–10c. The hosts may be, for example, web servers, database servers, or file/print servers, which have additional network connections (not illustrated) for serving a plurality of client computers (not illustrated). The hosts 10a–10c are coupled via their respective network links 11a–11c to a network 20. Also coupled to the network 20 is at least one storage controller 30. The storage controller 30 is coupled to a cache memory 40. The storage controller 30 is also coupled to the network 20 via network link 12. Finally, the storage controller 30 is coupled, via link 13a, to each of the plurality of storage devices 50a–50d of the storage system 100. In many instances, the storage system 100 includes at least one additional link 13b for coupling the storage controller 30 to the storage devices 50a–50d, in order to increase reliability and/or performance.
Each of the storage devices 50a–50d include addressable units, such as blocks. One addressing system commonly used is known as logical block addressing, in which a sequence of blocks from each device is assigned a corresponding sequence of integers known as logical block addresses (hereinafter “LBA”). The sequence of LBAs restart for each device. The blocks of the storage devices 50a–50d can be mapped in a number of ways to form one or more logical volumes (not illustrated in FIG. 1) which are the targets of the read and write commands issued by the hosts 10a–10c. Typically, the hosts 10a–10c address the logic volumes organized within the storage devices 50a–50d, using a volume address and a logical block address. This combination of addresses is also known as an equivalent address.
Additionally, a number of well known redundancy mechanisms can be used in connection with the logical volumes, so that different logical volumes are operated using different redundancy techniques. For example, one logical volume can be operated in a mirrored (i.e., “RAID-1”) mode while another logical volume can be operated using “RAID-5” redundancy. These redundancy mechanisms generally involve recording an additional copy of the data (e.g., RAID-1) and/or parity information (e.g., RAID-5) on the storage devices 50a–50d so that the data contained on any one or more storage device can be automatically reconstructed from the remaining storage devices in the event of an failure. The redundant information is typically not addressable by the hosts 10a–10c. Instead, the hosts continue to address the data using the combination of a storage device or logical volume identifier plus an LBA. If the identifier is associated with a failed storage device, the storage controllers 30a, 30b will use the redundant information and service the request by the host by transferring the requested data.
One important consideration for the network storage system 100 is its performance, especially in high utilization systems. The use of caching is critical to realizing the highest performance level from a network storage system 100. Caching is a technique where a copy of frequently used and/or recently used data is stored in a faster form of memory. For example, in disk systems, cache memories may be comprised of semiconductor memories, which have an access speed of at least one order of magnitude faster than the access speed of a disk drive. By storing a copy of frequently or recently used data, the cache anticipates future read requests and collects write data. When a read or write request addressed to a block already stored in a cache memory is received, the storage controller 30 may satisfy the request by reading or writing the data to the cache memory 40 instead of the slower disk drives 50a–50d. 
Unfortunately, conventional approaches to cache management and command conflict detection in a network storage system 100, such as continuous maintenance of command lists within the cache (as disclosed in U.S. Pat. No. 5,381,539), deletion of logical block address (LBA) space duplicates, and creation of additional segments are computationally intense. This leads to a reduction in data retrieval rates, difficulty in coalescing writes, and an increase in command execution times. Accordingly, there is a need and desire for a system and method to provide cache management that supports low cost cache management in high performance storage systems.